fix(scratch-vm): 拡張機能の HAT/EVENT ブロックを modern Blockly で帽子型に描画#748
fix(scratch-vm): 拡張機能の HAT/EVENT ブロックを modern Blockly で帽子型に描画#748takaokouji wants to merge 1 commit into
Conversation
…Blockly Extension hat blocks (koshien connect_game, micro:bit / face-sensing / boost / ev3 "when ..." blocks, etc.) rendered with a flat top instead of the cap-hat shape. In modern Blockly (scratch-blocks v2) the cap hat is only drawn when a block carries the `shape_hat` extension (which sets block.hat = 'cap'); a missing previousConnection alone is no longer enough because ADD_START_HATS defaults to false. The built-in event blocks declare extensions: ['colours_event', 'shape_hat'], so _convertBlockForScratchBlocks now adds 'shape_hat' to extension HAT/EVENT blocks the same way. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/fix/extension-hat-shape-modern-blockly/ |
|
upstream の https://scratch.mit.edu/projects/editor/ で確認。 あらためて、 upstream との違いを確認して、修正方針が正しいかどうかを検証してください。 |
|
Superseded by #749。 この PR は拡張 HAT/EVENT ブロックの帽子型不具合を
したがって正しい修正は「marker + concat で band-aid を重ねる」ことではなく、該当ファイルを upstream v13.7.2 の状態へ再整合すること。これにより将来の upstream マージも衝突なく行える。 監査と段階的再整合の計画は #749 に集約した。hat 帽子型の修正は #749 の follow-up Phase1(color/blockJSON 再整合)で v13.7.2 コードへの復元として実施する。 |

Summary
拡張機能の HAT / EVENT ブロックが modern Blockly (scratch-blocks v2) で帽子型に描画されない不具合の修正。スモウルビー甲子園の「プレイヤー名を () にして、ゲームサーバーへ接続する」(
koshien_connectGame) が平らな上端で表示されていた。micro:bit / 顔認識 / boost / ev3 などのwhen ...拡張 HAT ブロックも同様に影響する一般的な不具合。原因
modern Blockly はキャップ帽子型を
block.hat === 'cap'(=shape_hatextension) のときだけ描画する。previousConnectionが無いだけでは不十分(ADD_START_HATSは既定 false)。標準のイベントブロックはextensions: ['colours_event', 'shape_hat']を宣言して帽子型になっているが、scratch-vm の拡張ブロック変換 (_convertBlockForScratchBlocks) は HAT/EVENT にshape_hatを付与していなかった。Changes Made
src/engine/runtime.js: HAT/EVENT ブロックの blockJSON にshape_hatextension を付与(Smalruby マーカー付き)。アイコン付きブロックはscratch_extensionと併存.claude/rules/scratch-vm/development.md) を更新Test Coverage
test/unit/runtime_extension_hat_shape.jsを追加:HAT/EVENT はshape_hatを持ち、COMMAND は持たない(= 帽子化しない)こと、アイコン付き HAT は両 extension を持つことを検証Notes
upstream の modern-Blockly 移行に伴う一般的な不具合の修正のため、甲子園の各 PR とは独立。